package com.bw.base.net







import com.bw.base.entity.*
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.DELETE
import retrofit2.http.GET
import retrofit2.http.PATCH
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Path
import retrofit2.http.Query


interface ApiService {
    //登录
    @POST(Const.LOGIN_URL)
    suspend fun login(@Query("username")username:String, @Query("password")password:String):Res<LoginEntity>
    //注册
    @POST(Const.REGISTER_URL)
    suspend fun register(@Query("username")username:String, @Query("password")password:String):Res<RegiserEntity>
    //公告列表
    @GET(Const.GONGGAO_URL)
    suspend fun getGg(@Query("page")page:Int, @Query("size")size:Int):Res<GgcommentEntity>
    //发送公告
    @POST(Const.SENDGONGGAO_URL)
    suspend fun sendGg(@Body body: RequestBody):Res<GgcommentEntityItem>
    //公告详情

    //根据车位类型获取列表
    @GET(Const.PARKTYPE_URL)
    suspend fun getParkType(@Path("spaceType")spaceType:String):Res<ParkTypeEntity>
    //车位状态列表
    @GET(Const.PARKZT_URL)
    suspend fun getZTPark(@Path("spaceStatus")spaceStatus:String):Res<ParkTypeEntity>
    //用户区域车位列表
    @GET(Const.PARKADDRESS_URL)
    suspend fun getAddresPark(@Path("areaId")userId:Int):Res<ParkTypeEntity>
    //用户车牌号车位列表
    @GET(Const.PARKCODE_URL)
    suspend fun getCodePark(@Path("licensePlate")licensePlate:String):Res<ParkTypeEntity>
    //添加车位
    @POST(Const.PARKADD_URL)
    suspend fun addPark(@Body body:ParkAddParam):Res<ParkTypeEntityItem>
    //删除车位
     @DELETE(Const.PARKDELE_URL)
    suspend fun delePark(@Path("id")id:Int):Res<Boolean>
    //修改车位
    @PUT(Const.PARKUP_URL)
    suspend fun upPark(@Path("id")id: Int,@Body body: ParkAddParam):Res<ParkTypeEntityItem>

    //根据车辆id获取车辆管理列表
    @GET(Const.CARID_URL)
    suspend fun getCarId(@Path("id")id:Int):Res<CarmangerEntity>
    //根据车牌号获取车辆管理列表
    @GET(Const.CARCODE_URL)
    suspend fun getCodeCar(@Path("licensePlate")licensePlate:String):Res<CarmangerEntity>
    //添加车辆
    @POST(Const.CARMANADD_URL)
    suspend fun getaddcarmanger(@Body body:CarmangerAddParam):Res<CarmangerEntity>
    //删除车辆
    @DELETE(Const.CARMANDEL_URL)
    suspend fun getDelCarmanger(@Path("id")id:Int):Res<Boolean>
    @PUT(Const.CARMANUP_URL)
    suspend fun getUpCarmanger(@Path("id")id:Int,@Body body:CarmangerAddParam):Res<CarmangerEntity>

    //维修管理列表
    @GET(Const.REPAIR_URL)
    suspend fun getRepair():Res<RepairEntity>
    //根据名字获取维修管理列表
    @GET(Const.REPAIRNAME_URL)
    suspend fun getRepairName(@Query("repairName")repairName:String):Res<RepairEntity>
    //根据工单号获取维修管理列表
    @GET(Const.REPAIRCODE_URL)
    suspend fun getRepairCode(@Path("orderNumber")orderNumber:String):Res<RepairEntityItem>
    //添加工单
    @POST(Const.REPAIRADD_URL)
    suspend fun getRepairAdd(@Body body:RepairAddParam):Res<RepairEntityItem>
    //删除工单
    @DELETE(Const.REPAIRDAL_URL)
    suspend fun getRepairDel(@Path("id")id:Int):Res<Boolean>
    //修改工单
    @PUT(Const.REPAIRUP_URL)
    suspend fun getRepairUp(@Path("id")id:Int,@Body body:RepairAddParam):Res<RepairEntityItem>
    //工单详情
    @GET(Const.REPAIRXIANG_URL)
    suspend fun getRepairXiang(@Path("id")id:Int):Res<RepairEntityItem>
    //来访列表
    @GET(Const.FANG_URL)
    suspend fun getFang():Res<FangEntity>
    //根据来访状态
    @GET(Const.FANGSATUE_URL)
    suspend fun getFangZt(@Path("status")status:String):Res<FangEntity>
    //根据来访姓名
    @GET(Const.FANGNAME_URL)
    suspend fun getFangName(@Query("name")name:String):Res<FangEntity>
    //根据来访目的
    @GET(Const.FANGMUDI_URL)
    suspend fun getFangMudi(@Query("purpose")purpose:String):Res<FangEntity>
    //删除来访数据
    @DELETE(Const.FANGDEL_URL)
    suspend fun getFangDel(@Path("id")id:Int):Res<Boolean>
    //修改来访数据
    @PUT(Const.FANGUP_URL)
    suspend fun getFangUp(@Path("id")id:Int,@Body body:FangAddParam):Res<FangEntityItem>
    //来访详情
    @GET(Const.FANGXIANG_URL)
    suspend fun getFangXiang(@Path("id")id:Int):Res<FangEntityItem>
    //添加来访数据
    @POST(Const.FANGADD_URL)
    suspend fun getFangAdd(@Body body:FangAddParam):Res<FangEntityItem>
    //获取公告列表
    @GET(Const.GONGGAO_URL)
    suspend fun getGongGao(@Query("page")page:Int,@Query("size")size:Int):Res<GongEntity>
    //添加公告
    @POST(Const.GONGADD_URL)
    suspend fun getGongAdd(@Body body:GongAddParam):Res<GongEntityItem>
    //获取设备管理列表
    @GET(Const.DEVICE_URL)
    suspend fun getDevice():Res<DeviceEntity>
    //根据位置搜索设备
    @GET(Const.DEVICEADDRESS_URL)
    suspend fun getDeviceAddress(@Query("keyword")keyword:String):Res<DeviceEntity>
    //根据名称搜索设备
    @GET(Const.DEVICENAME_URL)
    suspend fun getDeviceName(@Query("keyword")keyword:String):Res<DeviceEntity>
    //删除设备
    @DELETE(Const.DEVICEDEL_URL)
    suspend fun getDeviceDel(@Path("id")id:Int):Res<Boolean>
    //获取设备详情
    @GET(Const.DEVICEXIANG_URL)
    suspend fun getDeviceXiang(@Path("id")id:Int):Res<DeviceEntityItem>
    //修改设备状态
    @PUT(Const.DEVICEUP_URL)
    suspend fun getDeviceUp(@Path("id")id:Int,@Body body:DeviceAddParam):Res<DeviceEntityItem>
    //获取企业档案列表
    @GET(Const.STAFF_URL)
    suspend fun getStaff():Res<StaffEntity>
    //企业档案详情
    @GET(Const.STAFFXIANG_URL)
    suspend fun getStaffXiang(@Path("id")id:Int):Res<StaffEntityItem>
    //删除企业档案
    @DELETE(Const.STAFFDEL_URL)
    suspend fun getStaffDel(@Path("id")id:Int):Res<Boolean>
    //获取考勤打卡列表
    @GET(Const.SIGINLIST_URL)
    suspend fun getSiginList(@Path("userId")userId:Int):Res<SiginEntity>
    //考勤打卡
    @POST(Const.SIGINDAKA_URL)
    suspend fun getSiginDaka(@Body siginParam: SiginParam):Res<SiginEntityItem>
    //文化管理--新闻列表
    @GET(Const.NEWS_URL)
    suspend fun getnews():Res<NewsEntity>
    //删除文化管理--新闻列表
    @DELETE(Const.NEWSDEL_URL)
    suspend fun getnewsdel(@Path("id")id:Int):Res<Boolean>
    //搜索文化管理--新闻列表
    @GET(Const.NEWSSEARCH_URL)
    suspend fun getnewssearch(@Query("keyword")keyword:String):Res<NewsEntity>
    //添加文化管理--新闻列表
    @POST(Const.NEWSADD_URL)
    suspend fun getnewsadd(@Body newsAddParam: NewsAddParam):Res<NewsEntityItem>
    //修改文化管理--新闻列表
    @PUT(Const.NEWSUP_URL)
    suspend fun getnewsup(@Path("id")id:Int,@Body body:NewsAddParam):Res<NewsEntityItem>
    //获取员工列表
    @GET(Const.EMP_URL)
    suspend fun getemp():Res<EmpEntity>
    //添加员工
    @POST(Const.EMPADD_URL)
    suspend fun getemadd(@Body empAddEntity: EmpAddParam):Res<EmpEntityItem>
    //获取部门id
    @GET(Const.DEPARTID_URL)
    suspend fun getdep():Res<DepartEntity>
    //获取该部门所有员工
    @GET(Const.DEPARTEMP_URL)
    suspend fun getdepnum(@Query("departmentId")departmentId:Int):Res<EmpEntity>
    //获取房源列表
    @GET(Const.HOUSE_URL)
    suspend fun gethouse(@Path("regionId")regionId:Int):Res<HouseEntity>
    //获取商家入驻列表
    @GET(Const.MERCHANT_URL)
    suspend fun getmerchant():Res<MerchantEntity>
    //商家入驻--同意
    @PATCH(Const.MERCHANTXIANG_URL)
    suspend fun getmerchantxiang(@Path("id")id:Int):Res<MerchantEntityItem>
    //商家入驻--拒绝
    @PATCH(Const.MERCHANTNO_URL)
    suspend fun getmerchantju(@Path("id")id:Int):Res<MerchantEntityItem>
    //添加商家
    @POST(Const.MERCHANTADD_URL)
    suspend fun getmerchantadd(@Body merchantAddEntity: MerchantAddParam):Res<MerchantEntityItem>
    //删除商家
    @DELETE(Const.MERCHANTDEL_URL)
    suspend fun getmerchantdel(@Path("id")id:Int):Res<Boolean>
    //巡检点位--列表
    @GET(Const.POINT_URL)
    suspend fun getpoint():Res<PointEntity>
    //巡检点位--搜索
    @GET(Const.POINTSEARCH_URL)
    suspend fun getpointsearch(@Query("location")location:String,@Query("name")name:String):Res<PointEntity>
    //巡检点位--详情
    @GET(Const.POINTXIANG_URL)
    suspend fun getpointxiang(@Path("id")id:Int):Res<PointEntityItem>
    //巡检点位--添加点位
    @POST(Const.POINTADD_URL)
    suspend fun getpointadd(@Body pointAddEntity: PointAddParam):Res<PointEntityItem>
    //巡检点位--删除
    @DELETE(Const.POINTDEL_URL)
    suspend fun getpointdel(@Path("id")id:Int):Res<Boolean>
    //巡检工单--列表
    @GET(Const.ORDER_URL)
    suspend fun getorder():Res<OrderEntity>
    //巡检工单--根据状态查询
    @GET(Const.ORDERSEARCH_STATUS_URL)
    suspend fun getorderstatus(@Query("status")status:String):Res<OrderEntity>
    //巡检工单--根据名字和状态查询
    @GET(Const.ORDERSEARCH_NAME_URL)
    suspend fun getordername(@Query("inspector")inspector:String,@Query("status")status:String):Res<OrderEntity>
    //巡检工单--删除
    @DELETE(Const.ORDERDEL_URL)
    suspend fun getorderdel(@Path("id")id:Int):Res<Boolean>
    //巡检工单--详情
    @GET(Const.ORDERXIANG_URL)
    suspend fun getorderxiang(@Path("id")id:Int):Res<OrderEntityItem>
    //巡检工单--开始巡检
    @PATCH(Const.ORDERSTART_URL)
    suspend fun getorderstart(@Path("id")id:Int):Res<OrderEntityItem>
    //巡检工单--完成巡检
    @PATCH(Const.ORDEREND_URL)
    suspend fun getorderend(@Path("id")id:Int):Res<OrderEntityItem>
    //巡检工单--更新
    @PUT(Const.ORDERUP_URL)
    suspend fun getorderup(@Path("id")id:Int,@Body orderaddparam:OrderAddParam):Res<OrderEntityItem>
    //巡检工单--添加
    @POST(Const.ORDERADD_URL)
    suspend fun getorderadd(@Body orderaddparam:OrderAddParam):Res<OrderEntityItem>
    //巡检任务--列表
    @GET(Const.TASK_URL)
    suspend fun gettask():Res<TaskEntity>
    //巡检任务--根据状态查询
    @GET(Const.TASKSTATUS_URL)
    suspend fun gettaskstatus(@Path("status")status:String):Res<TaskEntity>
    //巡检任务--详情
    @GET(Const.TASKXIANG_URL)
    suspend fun gettaskxiang(@Path("id")id:Int):Res<TaskEntityItem>
    //消息
    @GET(Const.MSG_URL)
    suspend fun getmsg(@Query("accessId")accessId:String,@Query("userId")userId:Int):Res<MsgEntity>
    //缴费列表
    @GET(Const.PAYLER_URL)
    suspend fun getpayler(@Path("payerId")payerId:Int):Res<PaylerEntity>
    //添加缴费
    @POST(Const.PAYLERADD_URL)
    suspend fun getpayleradd(@Body payleraddparam:PaylerAddParam):Res<PaylerEntityItem>
    //缴费详情
    @GET(Const.PAYLERXIANG_URL)
    suspend fun getpaylerxiang(@Path("id")id:Int):Res<PaylerEntityItem>
    //修改缴费
    @PUT(Const.PAYLERUP_URL)
    suspend fun getpaylerup(@Path("id")id:Int,@Body payleraddparam:PaylerAddParam):Res<PaylerEntityItem>
    //新增会员
    @POST("/memberships")
    suspend fun getmemadd(@Body useraddparam:MemAddParam):MemEntity
    //获取会员信息
    @GET("/memberships/{userId}")
    suspend fun getmem(@Path("userId")userId:Int):MemEntity
    //升级会员
    @PUT("/memberships/{userId}/upgrade")
    suspend fun getmemup(@Path("userId")userId:Int,@Query("newMembershipLevel")newMembershipLevel:String):MemEntity
    //获取会员权益
    @GET("/api/membership-benefits/{id}")
    suspend fun getmenber(@Path("id")id:Int):MenberEntity
    //出租房屋
    @PATCH("/api/properties/rent/{id}")
    suspend fun gethouseCZ(@Path("id")id:Int,@Query("rentDate")rentDate:String):Res<HouseEntityItem>
    //退组房屋
    @PATCH("/api/properties/unrent/{id}")
    suspend fun gethouseTZ(@Path("id")id:Int):Res<HouseEntityItem>
    //车位预约根据用户id获取
    @GET("/api/reservations/area/{areaId}")
    suspend fun getparkapply(@Path("areaId")areaId:Int):Res<ParkApplyEntity>
    //访客预约
    @GET("/api/visit-appointments")
    suspend fun getrepairapply():Res<RepairApplyEntity>
}